package com.wonders.hisdoctor.station.project.hisqueue.service;

import com.wonders.hisdoctor.station.project.hisqueue.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 就诊队列service
 *
 * @author zhanghaonan
 * @date 2021/01/20
 */
public interface IQueueService {

    /**
     * 查询病人信息
     *
     * @param requestVo
     * @return
     */
    PatientInfoResponseVo selectPatientInfo(PatientInfoRequestVo requestVo);

    /**
     * 更新就诊状态为在诊
     *
     * @param requestVo
     * @return
     */
    int updateRegStatus(PatientInfoRequestVo requestVo);

    /**
     * 科室下拉框
     *
     * @param empNo
     * @param hospitalCode
     * @return
     */
    List<DeptVo> selectDeptByEmpNo(String empNo, String hospitalCode);

    /**
     * 查询就诊队列
     *
     * @param requestVo
     * @return
     */
    WaitQueueResponseVo selectWaitQueue(WaitQueueRequestVo requestVo);

    /**
     * 号别下拉框
     *
     * @param vo
     * @return
     */
    List<ClinicIndexVo> selectClinicIndex(ClinicIndexVo vo);

    /**
     * 查询病人就诊记录
     *
     * @param patientId
     * @return
     */
    List<ClinicMasterQueryVo> selectClinicMaster(String patientId, String hospitalCode);

    /**
     * 完成就诊
     *
     * @param requestVo
     * @return
     */
    int finishVisit(PatientInfoRequestVo requestVo);

    /**
     * 取消就诊
     *
     * @param requestVo
     * @return
     */
    int cancelVisit(PatientInfoRequestVo requestVo);

    /**
     * 取消就诊
     *
     * @param requestVo
     * @return
     */
    boolean checkCancelVisit(PatientInfoRequestVo requestVo);

    /**
     * 号类下拉框
     *
     * @param vo
     * @return
     */
    List<ClinicIndexVo> selectClinicType(ClinicIndexVo vo);

    /**
     * 查询就诊队列(根据号类)
     *
     * @param requestVo
     * @return
     */
    WaitQueueResponseVo selectQueueByClinicType(WaitQueueRequestVo requestVo, HttpServletRequest request);
}
